import { ref, computed } from 'vue'

export function useTableData(originalData) {
    // 搜索结果数据
    const searchResults = ref([])
    // 是否正在加载
    const loading = ref(false)
    // 是否已执行过搜索
    const hasSearched = ref(false)
    
    // 计算属性：根据状态返回显示的数据
    const tableData = computed(() => {
        // 如果还没搜索过，显示所有数据
        if (!hasSearched.value) {
            return typeof originalData === 'function' ? originalData() : originalData
        }
        // 如果搜索过，显示搜索结果
        return searchResults.value
    })
    
    // 执行搜索
    const performSearch = (inputValue, searchFields) => {
        loading.value = true
        
        // 模拟网络延迟
        setTimeout(() => {
            const original = typeof originalData === 'function' ? originalData() : originalData
            
            if (!inputValue) {
                // 如果搜索关键字为空，显示所有数据
                searchResults.value = [...original]
            } else {
                const keyword = inputValue.toLowerCase().trim()
                searchResults.value = original.filter(item => {
                    return searchFields.some(field => {
                        const value = item[field]
                        return value && value.toLowerCase().includes(keyword)
                    })
                })
            }
            
            hasSearched.value = true
            loading.value = false
        }, 300) // 模拟300ms的网络延迟
    }
    
    // 重置搜索状态
    const resetSearch = () => {
        searchResults.value = []
        hasSearched.value = false
    }
    
    return {
        searchResults,
        loading,
        hasSearched,
        tableData,
        performSearch,
        resetSearch
    }
}